//引入vue
import Vue from 'vue'
import VueRouter from 'vue-router'

//使用插件
Vue.use(VueRouter)


import routes from '@/router/routes'

//大量的$router.push导致浏览器标红，重写push方法使error有回调可解决
let originPush = VueRouter.prototype.push
VueRouter.prototype.push = function(location,resolve,reject){
    //第一个形参：路由跳转的配置对象（query|params）
    //第二个参数：undefined|箭头函数（成功的回调）
    //第三个参数:undefined|箭头函数（失败的回调）
    if(resolve && reject){
    //push方法传递第二个参数|第三个参数（箭头函数）
    //originPush：利用call修改上下文，变为(路由组件.$router)这个对象，
    //第二参数：配置对象、第三、第四个参数：成功和失败回调函数
        originPush.call(this,location,resolve,reject)
    }else{
        originPush.call(this,location,()=>{},()=>{})
    }
}

//重写VueRouter.prototype身上的replace方法了
VueRouter.prototype.replace = function(location, resolve, reject) {
    if (resolve && reject) {
      originReplace.call(this, location, resolve, reject);
    } else {
      originReplace.call(this,location,() => {},() => {});
    }
};
  
//配置路由
export default new VueRouter({
    //配置路由
    routes:routes,
    // 路由跳转时候滚动条回到最上方
    scrollBehavior(to,from,savePosition){
       return{ x:0,y:0}
    }
})

